/*++

Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Module Name:
  EfiLdrHandoff.h

Abstract:

Revision History:

--*/

#ifndef _EFILDR_HANDOFF_H_
#define _EFILDR_HANDOFF_H_

#define EFILDR_BASE_SEGMENT    0x2000
#define EFILDR_LOAD_ADDRESS    (EFILDR_BASE_SEGMENT << 4)
#define EFILDR_HEADER_ADDRESS  (EFILDR_LOAD_ADDRESS+0x2000)

#define EFILDR_CB_VA  0x00

typedef struct _EFILDRHANDOFF {
  UINTN                    MemDescCount;
  EFI_MEMORY_DESCRIPTOR    *MemDesc;
  VOID                     *BfvBase;
  UINTN                    BfvSize;
  VOID                     *DxeIplImageBase;
  UINTN                    DxeIplImageSize;
  VOID                     *DxeCoreImageBase;
  UINTN                    DxeCoreImageSize;
  VOID                     *DxeCoreEntryPoint;
} EFILDRHANDOFF;

typedef struct {
  UINT32    CheckSum;
  UINT32    Offset;
  UINT32    Length;
  UINT8     FileName[52];
} EFILDR_IMAGE;

typedef struct {
  UINT32    Signature;
  UINT32    HeaderCheckSum;
  UINT32    FileLength;
  UINT32    NumberOfImages;
} EFILDR_HEADER;

#endif
